第2章 数据表示

  1. swift在赋值时,自动根据值的类型指定变量或常量的类型。
var num = 3; let pi = 3.14
  1. 判断字符串是否为空:
string = ""
string.isEmpty 
return true
  1. 多行字符串,用三个双引号独占一行表示开始,最后三个双引号结束。结束三个双引号最左边的列是起始列,在此基础上的缩紧才是有效的。
  2. list.firstIndex(of:str) 返回 str对应在list中首次出现的index
  3. list字符串提取
运算符 含义 示例 结果 解释
..< 不包含右边界(开区间) "Hello"[...<3] "Hel" 从字符串的开头到索引3之前的部分,不包括索引3的字符。
... 包含右边界(闭区间) "Hello"[...3] "Hell" 从字符串的开头到索引3的部分,包括索引3的字符。
  1. swift采用可变长度编码字符串,不同字符的内存占用不同。如果用整数索引string[0],那么swift不知道访问的是哪个字符,当索引落在某个字符串表示的中间时。Python 通过 隐藏底层编码复杂性,让字符串索引更加直观,而 Swift 则暴露了字符串的底层存储细节,让开发者必须考虑字符边界。
import Foundation

var test_string = "Hello, Swift"

// 1.先获取字符所在的索引:获取第二个字符的索引(从 startIndex 偏移 1 个字符)
let index = test_string.index(test_string.startIndex, offsetBy: 1)

// 2.通过索引访问字符
let character = test_string[index]

print(character)  // 输出: e

  1. 在 Swift 中,str.endIndex 不是 指向最后一个字符的 index,而是指向字符串末尾的索引(超出最后一个字符的位置)。str.startIndex指向第一个字符串,offset=0。
print(str[str.endIndex]) // ❌ 运行时错误:索引超出范围
print(str[..<str.endIndex]) // ✅ 运行时正确,开区间避免取endIndex
print(str[str.startIndex...str.index(before: str.endIndex)]) // ✅ 正确

Index table

H e l l o
0 1 2 3 4 5
startIndex offset=1 offset=2 offset=3 offset=4 endIndex
  1. 字符串使用append和 str1 + str2 拼接字符串
  2. swift 默认小数为双精度浮点数
  3. tuple用圆括号存储数据,为一种数据结构。